package com.pushtime.service.search;

import com.pushtime.domain.HdfsLog;
import com.pushtime.web.rest.vm.DataVM;
import com.pushtime.web.rest.vm.HdfsVM;
import org.springframework.http.ResponseEntity;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Optional;

public interface HdfsDownloadService {

    /**
     * 创建 HDFS 下载
     *
     * @return 返回保存结果
     */
    HdfsLog createHdfsDownload(HdfsVM hdfsVM);

    /**
     * 执行 下载任务
     *
     * @param hdfsLog 任务详情
     * @param offset 偏移量
     */
    ResponseEntity<byte[]> startDownload(HdfsLog hdfsLog, long offset, int length);

    /**
     * 执行下载
     * @param hdfsLog
     * @param fileOutputStream
     * @throws IOException
     */
    void execute(HdfsLog hdfsLog, FileOutputStream fileOutputStream) throws IOException;

    /**
     * 获取下载状态
     *
     * @param id 任务编号
     * @return 返回下载状态信息
     */
    Optional<HdfsLog> getStatus(Long id);

    /**
     * 创建同步下载接口
     * @param hdfsVM
     * @return
     */
    HdfsLog createSynchronizedHdfsDownload(HdfsVM hdfsVM);

}
